/*
	File:		IGameState.h
	Author:		dmonroe
	Date:		11/10/2012
	Copyright:	Full Sail University

	Purpose:	Interface class for game states
*/

#ifndef IGAMESTATE_H
#define IGAMESTATE_H



class IGameState
{
public:
	// SINGLETON
	//static IGameState*	GetInstance		( void )	= 0;	// Expected signature for child classes! (Cannot have pure virtual static methods)
	virtual void			DeleteInstance	( void )	= 0;
	
	// SETUP
	virtual bool	Enter	( void )	= 0;			
	virtual bool	Exit	( void )	= 0;			

	// FRAME UPDATE
	virtual bool	Input	( float fElapsedTime )	= 0;
	virtual bool	Update	( float fElapsedTime )	= 0;
	virtual bool	Render	( float fElapsedTime )	= 0;


protected:
	IGameState				( void )		// Default constructor
		{	/* do nothing */	}
	virtual ~IGameState		( void )		// Destructor
		{	/* do nothing */	}

private:
	IGameState				( const IGameState& );		// Copy constructor
	IGameState&	operator=	( const IGameState& );		// Assignment operator
};

#endif //IGAMESTATE_H
